package com.smart.opcda.util;

import com.smart.opcda.dto.GroupSubItemResponse;
import javafish.clients.opc.component.OpcItem;
import javafish.clients.opc.variant.Variant;

/**
 * @author dengqiao
 * @date 2024/3/23 20:47
 */
public class VariantUtil {
    public static Object convertOpcValueToJava(OpcItem opcItem) {
        switch (opcItem.getDataType()) {
            case Variant.VT_UI1:
                return opcItem.getValue().getByte();
            case Variant.VT_I2:
                return opcItem.getValue().getWord();
            case Variant.VT_INT:
                return opcItem.getValue().getInteger();
            case Variant.VT_R4:
                return opcItem.getValue().getFloat();
            case Variant.VT_R8:
                return opcItem.getValue().getDouble();
            case Variant.VT_BOOL:
                return opcItem.getValue().getBoolean();
            case Variant.VT_BSTR:
                return opcItem.getValue().getString();
            default:
                return opcItem.getValue().toString().trim();
        }
    }

    public static Object convertStringToOpcValue(Object value, String dateType) {
        switch (dateType) {
            case "Integer":
                return Integer.parseInt(value.toString());
            case "Boolean":
                return Boolean.parseBoolean(value.toString());
            case "Decimal":
                return Float.parseFloat(value.toString());
            default:
                return value.toString();
        }
    }

}
